Web application frameworks are well known in the art. Web application frameworks are used by many web application developers to develop dynamic websites and richly featured web applications, and to reduce the complexity and time involved in web application development. Typically, a web application framework provides a library of reusable and extendable software components for common web application functions such as database access, obtaining user input, displaying data, and other functions. A developer, when creating a web application, may author components that use or extend one or more components of the library at runtime.
Web application frameworks are becoming more popular for building web applications that are executed by end user computing devices (e.g., laptop computers, desktop computers, smart phones, tablet computers, or other personal computing devices). These applications are typically written in a dynamic programming language such as Javascript, Jscript, ActionScript, or other language that can be interpreted and executed at runtime by a dynamic programming language runtime interpreter (e.g., a scripting engine of a web browser) installed on the end user's computing device.
Interpreting a component written in a dynamic programming language at runtime involves the runtime interpreter parsing and compiling language instructions that define the component to produce an intermediate form of the component (e.g. bytecode instructions) that can be more efficiently executed by the runtime interpreter than the original programming language instructions.
One problem associated with using a web application framework for building web applications is that the library of the framework often contains many components that are not used or extended at runtime by a given web application. Thus, the initialization time of the web application at the end user's computing device may be increased as a result of downloading and interpreting these unneeded components. This is unfortunate because typically the end user must wait until the web application has been initialized before the end user can begin using the web application. If this wait is long, the end user may become dissatisfied or frustrated with the web application. Further, downloading and interpreting unneeded components are wasteful of network resources and data storage and processing resources of the end user's computing device.
The interpretable instructions of a web application written in a dynamic programming language may be compressed by any of several well-known data compression techniques, such as removing white-space characters and comments from instructions and shortening variable and component names or by applying other data compression algorithms (e.g., gzip). These compression techniques, however, are incomplete. In particular, these techniques retain components of the web application framework library that are not needed at runtime. These unneeded components may amount to a substantial portion of the web application even after data compression techniques have been applied.
Based on the foregoing, web application developers and end users of web applications would appreciate techniques and mechanisms that further reduce the size of web applications built using a web application framework, thereby further reducing web application download and initialization time.
The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.